"""author:qinyu
   data: 2021/11/24
   project: cjh
"""

#1、输入数字n，输出n天前的日期（time或者datatime模块）

# import datetime
#
# i = int(input("请输入您想查询几天前的日期"))
# ago = (datetime.datetime.now() -datetime.timedelta(days=i))
# ago_date = ago.strftime("%Y-%m-%d")
# print(f"{i}天前的日期是{ago_date}")

#2、输出指定文件夹下有哪些文件或文件夹（实现ls命令， os）



# import os
# for root, dirs, files in os.walk("D:\cjh\learn_code"):
#     print('目录路径为：', root)
#     print(f'{root}文件夹下的文件夹有：', dirs)
#     print(f'{root}文件夹的文件有：', files)


import os
file_path = input("请输入您想查询的文件夹：")
for root, dirs, files in os.walk(file_path):
    print('目录路径为：', root)
    print(f'{root}文件夹下的文件夹有：', dirs)
    print(f'{root}文件夹的文件有：', files)

#3、列表去重，并且从小到大排序
# ls1 = [1,12,26,38,46,20,19,105,98,64,20,12]
# # sets = list(set(ls1))
# sort = list(sorted(set(ls1)))
# print(sort)

#4、如何在一个函数内部修改全局变量
# x = 1
# def fun1():
#     global x
#     x = 2
#
# if __name__ == "__main__":
#     print(x)
#     fun1()
#     print(x)

#5、如何跨模块共享全局变量
# import one
# print(one.a)

#6、python的基本数据类型有哪些？
# 数值类型（整型，浮点型，复数）、string（字符串）、tuple（元组）
# list（列表）、dict（字典）、set（集合）

#7、python中生成随机整数（1-10），随机小数（1-10），随机小数（0-1）的方法
# import random
#
# print(random.randint(1, 10))
# print(random.uniform(1, 10))
# print(random.random())



#8、python中哪些是可变数据类型，哪些是不可变数据类型
# 可变数据类型：list（列表）、dict（字典）、set（集合）
# 不可变数据类型：数值类型（int、float、bool）、string（字符串）、tuple（元组）

#9、a+=1与a=a+1有什么区别
#对于可变类型，a+=1内存地址没有改变，而对于不可变类型，内存地址增加了4个字节。
#而a=a+1这种操作都是增加4个字节


#10、什么是pep8？说出5点它的标准
# pep8是一种编码规范
# 1.缩进，4个空格的缩进（编辑器都可以完成此功能），不使用Tap，更不能混合使用Tap和空格。
# 2.每行最大长度79，使用 \ 或 () 控制换行
# 3.顶层函数和类的定义，前后用两个空行隔开。类里的方法定义用一个空行隔开。
# 4.import 导入通常在分开的行
# 5.等号运算符的两边空格，逗号后面空格


#11、给定一个字符串，找出字符串第一个重复的字符
# sts = "123swwuyh56gd452dxy0"
# for s in sts:
#     if sts.count(s) > 1:
#         print(s)
#         break

#12、简述深拷贝与浅拷贝
# 浅拷贝只会拷贝第一层对象的地址,可能会造成修改拷贝之后的值，会改变原来的值
# 深拷贝不会发生上面这种情况,深拷贝就是拷贝每一次数据

#13、简述python内存机制
# 以引用计数为主，分代回收、标记清除为辅的垃圾回收方式，
# 以及对小整型进行缓存和简单字符串驻留的内存池机制

#14、使用python实现冒泡排序，快速排序
# 冒泡
# up = [1, 5, 46, 9, 4, 82, 75, 12, 32]
# for i in range(0, len(up)):
#     for j in range(i+1, len(up)):
#         if up[j] < up[i]:
#             up[i], up[j] = up[j], up[i]
# print(up)
# 快速排序
# def quicksort(quick):
#     if len(quick) <= 1:
#         return quick
#     mid = quick[len(quick)//2]
#     left =[]
#     right = []
#     quick.remove(mid)
#     for item in quick:
#         if item >= mid:
#             right.append(item)
#         else:
#             left.append(item)
#     return quicksort(left) + [mid] + quicksort(right)
#
# if __name__ == '__main__':
#     lss = [1, 5, 46, 9, 4, 82, 75, 12, 32]
#     print(quicksort(lss))

#15、验证一个字符串是否属于回文（从左到右，从右到左都是一样）
# ss = input("请输入您想验证的字符串：")
# ss1 = ss[::-1]
# if ss1 == ss:
#     print("是回文")
# else:
#     print("不是回文")

